console.show();
log("返回首页");
home();
log("等待两秒。。");
sleep(2000);
text("梦想在线").findOne().click();
log("再等待两秒。。");
sleep(2000);

log("点击学历");
id("recycler_view").findOne().children().forEach((e, i) => {
    if (i == 3) {
        log("i", i);
        e.child(0).click();
    }
});
log("稍等一秒钟");
sleep(1000);
id("myclass_course").findOne().click();
log("点击听课学习");
log("稍等一秒钟");
sleep(1000);
var sectionName
// if (text('概率论与数理统计').findOne()) {
//     var sectionId = 'name';
//     var maxScrollAttempts = 10; // 最大滚动尝试次数
//     var scrollAttempts = 0;
//     while (scrollAttempts < maxScrollAttempts) {
//         // 查找所有 id 为 sectionId 的元素
//         var sectionElements = id(sectionId).find();

//         if (sectionElements.size() > 0) {
//             // 遍历找到的元素并打印它们的文本
//             sectionElements.forEach(function (sect) {
//                 log("sectionName: " + sect.text());
//             });
//             break; // 找到元素，退出循环
//         } else {
//             log("未找到 id 为 '" + sectionId + "' 的元素，尝试滚动屏幕");
//             // 滚动屏幕
//             swipe(device.width / 2, device.height * 3 / 4, device.width / 2, device.height / 4, 500);
//             sleep(1000); // 等待滚动完成
//             scrollAttempts++;
//         }
//     }

//     if (scrollAttempts >= maxScrollAttempts) {
//         log("达到最大滚动尝试次数，未找到更多 id 为 '" + sectionId + "' 的元素");
//     }

// }
function swipeUp(distance) {
    // 计算滑动起始和终止坐标
    var startX = device.width / 2;
    var startY = device.height / 2 + distance / 2;
    var endX = device.width / 2;
    var endY = device.height / 2 - distance / 2;

    // 执行滑动操作
    swipe(startX, startY, endX, endY, 500);
    sleep(1000); // 等待滑动操作完成
}



function findAndClickCourse(courseName) {
    var maxScrollAttempts = 10; // 最大滚动尝试次数
    var scrollAttempts = 0;
    // 示例使用：上滑300像素
    swipeUp(500);
    log('上划 稍等1 秒')
    sleep(1000)
    while (scrollAttempts < maxScrollAttempts) {
        var courseElement = textContains(courseName).findOne(2000); // 等待最多2秒
        var kebounds = text(courseName).findOne().bounds();

        if (courseElement) {
            log("找到课程：" + courseName);
            // click(kebounds.centerX(), kebounds.centerY());
            // sleep(1000);
            courseElement.click();
            return false; // 找到课程并点击后退出函数
        } else {
            log("未找到课程 '" + courseName + "'，尝试滚动屏幕");
            // 滚动屏幕
            swipe(device.width / 2, device.height * 3 / 4, device.width / 2, device.height / 4, 500);
            sleep(1000); // 等待滚动完成
            scrollAttempts++;
        }
    }

    log("达到最大滚动尝试次数，未找到课程 '" + courseName + "'");
    return false;
}

var keList = ['概率论与数理统计', '计算机网络', '专业英语（理）', '数据结构▲'];
var currentCourseIndex = 1;
var videoEnded = false;  // 新增状态变量
var progressexitstauts = false;
function longcheckprogress() {
    // 持续检查进度条是否存在 
    var progressBar = id("alivc_info_small_seekbar").findOne(1000);
    if (progressBar) {
        progressexitstauts = true;
        console.log('检测结果 进度条存在');
    } else {
        progressexitstauts = false;
        log('检测结果 进度条不存在')
    }
}
function extractNumber(text) {
    // 去掉非数字字符
    var numberStr = text.replace(/[^\d]/g, '');
    // 将字符串转换为数字
    return parseInt(numberStr, 10);
}
function ensureProgressBarVisible() {
    var progressBar = id("alivc_info_small_seekbar").findOne(1000); // 尝试快速找到进度条，等待1秒
    if (!progressBar) {
        log("进度条未显示，尝试通过点击播放区域中心使其出现");
        // 已知的bounds值
        var left = 0, top = 60, right = 540, bottom = 375;
        var centerX = (left + right + 100) / 2;
        var centerY = (top + bottom) / 2;
        sleep(1000); // 等待一段时间后再次检查
        setTimeout(() => {
            click(centerX, centerY); // 点击计算出的中心点
            progressBar = id("alivc_info_small_seekbar").findOne(1000);
            if (!progressBar) {
                log("尝试后仍未找到进度条，检查是否存在UI问题");
            } else {
                log("进度条现已显示");
            }
        }, 7000);

    } else {
        log("进度条已存在");
    }
}
function isLongVideoFun() {
    // 是否是长视频 大于25分钟都是长视频 
    try {
        var totalTimeText = textMatches(/\d+:\d+/).find()[1].text(); // 获取视频总时长文本，假设格式为 "mm:ss" 或 "hh:mm:ss"
        var timeParts = totalTimeText.split(':').map(Number); // 将时间文本分割成数组并转换为数字
        var totalMinutes;

        if (timeParts.length === 3) { // 如果时间格式为 "hh:mm:ss"
            totalMinutes = timeParts[0] * 60 + timeParts[1]; // 将小时转换为分钟并加上分钟数
        } else if (timeParts.length === 2) { // 如果时间格式为 "mm:ss"
            totalMinutes = timeParts[0]; // 直接获取分钟数
        }

        return totalMinutes > 25; // 判断是否大于25分钟
    } catch (error) {
        log("检测视频长度时发生错误: " + error.message);
        return false; // 如果发生错误，默认返回 false
    }
}

function playCourse(courseName) {
    // id = video_play_state_icon
    // var storage = storages.create(courseName);
    // var kenum = storage.get("onekeNum", 1);  // 默认从第一节开始
    var kenum = 1;  // 默认从第一节开始
    var kebounds = text(courseName).findOne().bounds();
    click(kebounds.centerX(), kebounds.centerY());
    sleep(1000);
    function summarizeSections() {
        var sections = textMatches(/\d+节/).find();
        var totalSections = sections.length;
        var completedSections = 0;
        var incompleteSections = 0;

        sections.forEach(function (section) {
            var progress = section.parent().child(0).text();
            if (progress === "100%" || (!progress && videoEnded)) {
                completedSections++;
            } else {
                incompleteSections++;
            }
        });

        log("课程: " + courseName);
        log("总小节数: " + totalSections);
        log("已完成小节数: " + completedSections);
        log("未完成小节数: " + incompleteSections);
    }

    function playNextSection() {
        summarizeSections();
        var sections = textMatches(/\d+节/).find();
        var sectionFound = false;
        var maxScrollAttempts = 10; // 最大滚动尝试次数，防止无限循环
        var scrollAttempts = 0;

        while (!sectionFound && scrollAttempts < maxScrollAttempts) {
            for (var i = 0; i < sections.length; i++) {
                var section = sections[i];
                var progress = section.parent().child(0).text();
                if (progress == "100%" || (!progress && videoEnded) || progress == "99%" || progress == "98%" || progress == "97%") {
                    // 已完成的小节，跳过
                }
                /*  if(extractNumber(progress)>=96){
                     console.log('extractNumber(progress)',extractNumber(progress));
                 } */
                else {
                    var centerX = section.bounds().centerX();
                    var centerY = section.bounds().centerY();
                    log("即将播放" + section.text() + "，坐标: (" + centerX + ", " + centerY + ")");
                    if (centerX > 0 && centerY > 0) {
                        click(centerX, centerY);
                        sleep(1000);
                        dragProgressBarToEnd(); // 拖动进度条
                        sectionFound = true;
                        break;
                    } else {
                        log("坐标不在有效范围内");
                    }
                }
            }

            if (!sectionFound) {
                log("未找到未完成的小节，尝试滚动屏幕");
                // 使用id为sheet的元素进行滚动
                var sheet = id("sheet").findOne();
                if (sheet) {
                    sheet.scrollForward();
                    sleep(1000); // 等待滚动完成
                    sections = textMatches(/\d+节/).find(); // 重新获取小节列表
                    scrollAttempts++;
                } else {
                    log("未找到id为sheet的元素");
                    break;
                }
            }
        }

        if (!sectionFound) {
            log("本课程已播放完毕,脚本结束");
            currentCourseIndex++;
            if (currentCourseIndex < keList.length) {
                playCourse(keList[currentCourseIndex]);
            } else {
                log("所有课程已播放完毕");
                exit();
            }
        }
    }
    function dragProgressBarToEnd() {
        try {
            // ensureProgressBarVisible()
            var progressBar = id("alivc_info_small_seekbar").findOne(3000); // 等待3秒尝试找到进度条
            if (progressBar) {
                var bounds = progressBar.bounds();
                var endX = isLongVideoFun() ? bounds.right - 15 : bounds.right - 25; // 减去15以确保点击在进度条内部的最右端
                var centerY = bounds.centerY();
                click(endX, centerY); // 直接点击进度条的最右端
                log("已点击进度条最右端");
            } else {
                log("未找到进度条，无法拖动到最右端");
                throw new Error("进度条控件未找到");
            }
        } catch (error) {
            log("拖动进度条时发生错误: " + error.message);
        }
    }
    function testvideoOver() {
        // ensureProgressBarVisible()
        var currentTime = textMatches(/\d+:\d+/).findOne().text();
        var totalTime = textMatches(/\d+:\d+/).find()[1].text();
        log('testvideoOver', currentTime, totalTime)
        if (currentTime === totalTime) {
            videoEnded = true;  // 标记视频已结束
            kenum++;
            // storage.put("onekeNum", kenum);
            log("课程播放完毕，即将点击播放下一集");

            log("即将播放第" + kenum + "节", "一秒后播放");
            sleep(1000);
            playNextSection();
        } else if (currentTime !== totalTime) {
            videoEnded = false;  // 重置视频结束标记
            log("等待课程播放完毕");
        } else {
            console.log("错误", currentTime, totalTime, videoEnded);
        }
    }

    playNextSection();
    var dd = setInterval(testvideoOver, 7000);
    // var ee= setInterval(longcheckprogress,1000)

}
// findAndClickCourse('计算机网络')
findAndClickCourse('概率论与数理统计')
// playCourse(keList[currentCourseIndex]);